<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			//不断优化
			/*
			创建一个Person构造函数
				在Person构造函数中，为每一个对象都添加了一个sayName方法
				构造函数每执行一次会创建一次sayName方法
				也就是所有实例的sayName都是唯一的
				这样就导致构造函数执行一次就会创建一个新方法
				执行1566516次就会创建1566516次方法
				完全没有必要可以使所有对象共享同一方法，优化性能
			*/
			
			function Person(name,age,gender){
				this.name = name;
				this.age = age;
				this.gender = gender;
				
				//向对象添加一个方法
				// this.sayName = function(){
				// 	alert(this.name);
				// };
				this.sayName = fun;
			}
			//将sayName方法写在全局作用域中定义
			
			/*
			将函数定义在全局作用域中，污染了全局作用域的命名空间
			重点是定义在全局作用域中不安全
			具有局限性尽量不要再全局作用域中写
			*/
			function fun(){
				alert(this.name);
			};
			//创建一个Person的实例
			var per = new Person("wda",15,"ad");
			var per2 = new Person("da",18,"adw");
			console.log(per.sayName() == per2.sayName());
			
		</script>
	</body>
</html>
